﻿using System;

////////////////////////////////////////////////////////////////////////////////////////---第四章--类和类成员


////特点：参数个数不同，参数类型不同（例如ref和out修饰引用的），返回值类型不同
//namespace ConsoleApp1
//{
//    class Program1
//    {
//        public static int Add(int a, int b)
//        {
//            return a + b;
//        }

//        public static string Add(string a, string b)
//        {
//            return a + b;
//        }

//        public static void Main1(string[] arge)
//        {
//            Console.WriteLine("int Add:{0}\nstring Add:{1}", Add(1, 2), Add("C#", "语言程序设计"));
//        }
//    }
//}



//namespace ConsoleApp1
//{
//    class Rectangle
//    {
//        public double Length { get; set; }
//        public double Width { get; set; }

//        public Rectangle(double L, double W)
//        {
//            Length = L;
//            Width = W;
//        }

//        public void setLW(double L, double W)
//        {
//            Length = L;
//            Width = W;
//        }

//        public double Area()
//        {
//            return Length * Width;
//        }
//    }
//    class Program
//    {
//        public static void Main1(string[] arge)
//        {
//            Rectangle r = new Rectangle(2.5, 3.5);
//            Console.WriteLine(r.Area());
//            r.setLW(1.5, 2.1);
//            Console.WriteLine(r.Area());
//        }
//    }
//}




//namespace ConsoleApp1
//{
//    class Vehicle
//    {
//        public int Speed { get; set; }
//        public int MaxSpeed { get; set; }
//        public int Weight { get; set; }
//        public string Type { get; set; }

//        public Vehicle() { }
//        public Vehicle(int W, string T)
//        {
//            Weight = W;
//            Type = T;
//        }

//        public void Run()
//        {
//            Console.WriteLine(Type + "行驶中：当前时速>"+ Speed +"<");
//        }

//        public void Stop()
//        {
//            Console.WriteLine(Type + "已停止");
//        }

//        public void ShowVehicleInfo()
//        {
//            Console.WriteLine(Type+"重量："+Weight+"吨，最大时速："+MaxSpeed);
//        }

//    }
//    class Program
//    {
//        public static void Main1(string[] arge)
//        {
//            Vehicle v1 = new Vehicle();
//            v1.Type = "宝马";
//            v1.MaxSpeed = 220;
//            v1.Speed = 120;
//            v1.Weight = 15;
//            v1.Run();
//            v1.ShowVehicleInfo();
//            v1.Stop();
//            Console.WriteLine();
//            v1 = new Vehicle(10,"奔驰");
//            v1.MaxSpeed = 200;
//            v1.Speed = 100;
//            v1.Run();
//            v1.ShowVehicleInfo();
//            v1.Stop();
//        }
//    }
//}

//////////////////////////////////////////////////////////////////////////////////////-----第五章>继承和多态


//namespace ConsoleApp1
//{
//    abstract class Sports//抽象类
//    {
//        public abstract void Play();
//    }

//    //class Sports
//    //{
//    //    public virtual void Play() { }//虚方法
//    //}

//    class Basketball : Sports
//    {
//        public override void Play()
//        {
//            Console.WriteLine("足球是用手打的");
//        }
//    }

//    class Football : Sports
//    {
//        public override void Play()
//        {
//            Console.WriteLine("篮球是用脚踢的");
//        }
//    }

//    class Program
//    {
//        public static void HowToPlay(Sports sp)
//        {
//            sp.Play();
//        }

//        public static void Main1(string[] arge)
//        {
//            Sports s = new Basketball();
//            HowToPlay(s);
//            s = new Football();
//            HowToPlay(s);
//        }
//    }
//}


namespace ConsoleApp1
{
    class 面积
    {
        public double 长 { get; set; }
        public double 宽 { get; set; }

        public 面积(double L, double W)
        {
            长 = L;
            宽 = W;
        }

        public virtual double Area()
        {
            return 长 * 宽;
        }
    }

    class 矩形 : 面积
    {
        public 矩形(double L, double W) : base(L, W)
        {
            L = L;
            W = W;
        }
        public override double Area()
        {
            return 长 * 宽;
        }
    }

    class 正方形 : 面积
    {
        public 正方形(double L, double W) : base(L, W)
        {
            L = L;
            W = W;
        }
        public override double Area()
        {
            return 长 * 宽;
        }
    }

    class Program
    {
        public static void Main1(string[] arge)
        {
            面积 s = new 面积(2.5, 2.6);
            Console.WriteLine(s.Area());
            s = new 矩形(2.4, 2.5);
            Console.WriteLine(s.Area());
            s = new 正方形(1.2, 1.2);
            Console.WriteLine(s.Area());
        }
    }
}

